.TITLE DRAFF .IDENT /01/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; VERSION 01 ; ; J. E. PROVINO 18-JUL-78 ; ;+ ; **-$DRSAF-SPECIFY CPU AFFINITY ; ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO ADD CPU AFFINITY ; TO THE CURRENT TASK. ; ; DPB FORMAT: ; ; WD. 00 -- DIC(161.),DPB SIZE(2.). ; WD. 01 -- AFFINITY MASK ; ; INPUTS: ; ; R2=ADDRESS OF SECOND STATUS WORD OF CURRENT TASK ; R3=POINTER TO WD. 1 IN THE DPB ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF +1 IS RETURNED. ; C=1 IF DIRECTIVE IS REJECTED. ; DIRECTIVE STATUS OF 'D.RS8' IS RETURNED IF THE TASK ; HAS AN INSTALLED AFFINITY OR IF THE SPECIFIED ; AFFINITY IS INVALID. ;- .IF DF M$$PRO .ENABL LSB $DRSAF::BIT #T2.AFF,(R2) ;WAS TASK INSTALLED WITH AFFINITY? BNE 10$ ;YES IF NE MOV T.RRM(R5),R0 ;GET REQUIRED RUN MASK BIS (R3),R0 ;ADD SPECIFIED AFFINITY CALL $TSTAM ;IS TASK'S NEW AFFINITY VALID? BCS 10$ ;NO IF CS MOV R0,T.RRM(R5) ;SET AFFINITY IN TASK'S TCB MOV T.PCB(R5),R0 ;GET ADDRESS OF TASK REGION PCB BIS (R3),P.RRM(R0) ;SAVE DIRECTIVE RELATED AFFINITY CALL $SETRT ;FORCE TASK TO RUN ON REQUIRED PROCESSOR CLC ;SUCCESS RETURN 10$: DRSTS D.RS8 ;DIRECTIVE INCONSISTANT WITH TASK STATE ;+ ; **-DRRAF-REMOVE AFFINITY ; ; THIS DIRECTIVE REMOVES AFFINITY WHICH WAS PREVIOUSLY SPECIFIED BY ; THE DRAAF DIRECTIVE. ; ; DPB FORMAT: ; ; WD. 0 -- DIC. (163.),DBP SIZE(2.) ; ; INPUTS: ; ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK ; R3=ADDRESS OF THE DBP + 2 ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF +1 IS RETURNED. ; C=1 IF DIRECTIVE IS REJECTED ; DIRECTIVE STATUS OF 'D.RS8' IS RETURNED IF TASK WAS ; INSTALLED WITH AFFINITY ;- $DRRMA::BIT #T2.AFF,(R2) ;WAS TASK INSTALLED WITH AFFINITY? BNE 10$ ;YES IF NE MOV T.PCB(R5),R0 ;GET ADDRESS OF TASK REGION PCB CLR P.RRM(R0) ;CLR DIRECTIVE RELATED AFFINITY CALL $SETAP ;RECALCULATE TASK'S AFFINITY CLC ;SUCCESS RETURN .DSABL LSB .ENDC .END